/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.socialfun.controladores;

import com.ec.socialfun.datamanager.TarjetaVirtualDataManager;
import com.ec.socialfun.excepciones.EnvioMailException;
import com.ec.socialfun.excepciones.QRCodeException;
import com.ec.socialfun.servicios.externos.EnvioDeMailServicio;
import com.ec.socialfun.servicios.externos.QRCodeServicio;
import java.io.File;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import org.jboss.logging.Logger;

/**
 *
 * @author jorge
 */
@ManagedBean
@RequestScoped
public class TarjetaVirtualControlador extends PadreControlador {

    private static final Logger LOG = Logger.getLogger(TarjetaVirtualControlador.class.getName());
    @EJB
    private QRCodeServicio qrCodeServicio;
    @EJB
    private EnvioDeMailServicio envioDeMailServicio;
    @ManagedProperty(value = "#{tarjetaVirtualDataManager}")
    private TarjetaVirtualDataManager tarjetaVirtualDataManager;

    /**
     * Creates a new instance of TarjetaVirtualControlador
     */
    public TarjetaVirtualControlador() {
    }

    @Override
    public void iniciarDatos() {
        try {
            LOG.info("INICIAR DATOS");
            File qrCodeFile = qrCodeServicio.generarTarjetaVirtual(this.obtenerUsuarioLogeado());
            LOG.info("qrCodeFile = " + qrCodeFile.length());
            getTarjetaVirtualDataManager().setQrCodeFile(qrCodeFile);
            getTarjetaVirtualDataManager().setMostarMensaje(false);
        } catch (QRCodeException ex) {
            LOG.error("Error al generar QRCODE de usuario " + this.obtenerUsuarioLogeado() + ", Detalle: " + ex);
            this.mensajeError("Error al generar Tarjeta Virtual");
        }
    }
    
    public void enviarTarjeta() {
        try{
            LOG.info(".... enviarTarjeta");
            envioDeMailServicio.enviarTarjetaVirtual(this.obtenerUsuarioLogeado(), getTarjetaVirtualDataManager().getQrCodeFile());
            this.mensajeExitoso("El mail ha sido enviado.");
        }catch( EnvioMailException e){
            LOG.error("Error al enviar mail con tarjeta virtual " + e);
            this.mensajeError("No se pudo enviar el mail");
        }
        
        
    }

    public TarjetaVirtualDataManager getTarjetaVirtualDataManager() {
        return tarjetaVirtualDataManager;
    }

    public void setTarjetaVirtualDataManager(TarjetaVirtualDataManager tarjetaVirtualDataManager) {
        this.tarjetaVirtualDataManager = tarjetaVirtualDataManager;
    }
}
